package com.ithema.manger2.controller;

import com.ithema.manger2.domain.Student;
import com.ithema.manger2.service.StudentService;

import java.util.Scanner;

public class StudentController {
    //创建键盘录入对象
    Scanner sc=new Scanner(System.in);
    public void start() {
        while(true){
            //主菜单
            System.out.println("--------欢迎来到 <学生> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加学生  2.删除学生  3.修改学生  4.查看学生  5.退出");
            //创建键盘录入
            Scanner sc=new Scanner(System.in);
            String line=sc.nextLine();
            //switch判断
            switch(line){
                case "1":
                    //System.out.println("1.添加学生");
                    addStudent();
                    break;
                case "2":
                    //System.out.println("2.删除");
                    deleteStudent();
                    break;
                case "3":
                    //System.out.println("3.修改");
                    updateStudent();
                    break;
                case "4":
                    //System.out.println("4.查看");
                    findAllStudent();
                    break;
                case "5":
                    System.out.println("感谢使用!");
                    return;
                default:
                    System.out.println("您的输入有误!");
                    break;
            }
        }
    }
//修改学生信息
    public void updateStudent() {
        /*//定义新学号,为了{ }外使用
        String updateSid;
        //死循环为了执着的死磕
        while(true){
            //键盘录入要修改的新学号
            //Scanner sc=new Scanner(System.in);
            System.out.println("请输入您要修改的学号!");
            updateSid = sc.nextLine();
            //调用StudentService中的isExist方法判断学号是否存在
            StudentService studentService=new StudentService();
            boolean flag=studentService.isExist(updateSid);
            //判断
            if(!flag){
                System.out.println("您输入的学号不存在!请重新输入");
            }else{
                break;
            }
        }*/

        //调用方法输入学号
        String updateSid=inputStudentSid();

        /*System.out.println("请输入新姓名:");
        String name=sc.nextLine();
        System.out.println("请输入新年龄:");
        String age=sc.nextLine();
        System.out.println("请输入新生日:");
        String birthday = sc.nextLine();
        //创建新对象录入
        Student updateStu=new Student();
        updateStu.setSid(updateSid);
        updateStu.setName(name);
        updateStu.setAge(age);
        updateStu.setBirthday(birthday);*/

        //调用方法键盘录入学生对象信息
        Student updateStu=inputStudentinfo(updateSid);

        //调用StudentService中的updateStudent方法对信息进行修改
        StudentService studentService=new StudentService();
        studentService.updateStudent(updateSid,updateStu);
        //输出结果
        System.out.println("修改成功!");
    }

    //删除学生
    public void deleteStudent() {
        /*//创建键盘录入对象
        //Scanner sc=new Scanner(System.in);
        //定义学号,为了在{ }外进行操作
        String sid;
        //不明所以,还有几回可以输对学号
        while(true){
            System.out.println("请输入您要删除的学号");
           sid=sc.nextLine();
            //调用StudentService的isExist方法判断学号是否存在
            StudentService studentService=new StudentService();
            boolean flag=studentService.isExist(sid);
            //判断
            if(!flag){
                System.out.println("您输入的学号不存在,请重新输入");
            }else{
                break;
            }
        }*/

        //调用方法键盘输入学号
        String sid=inputStudentSid();
        //调用StudentService的deletStudent方法删除
        StudentService studentService=new StudentService();
        studentService.deletStudent(sid);
        //输出删除成功

        System.out.println("删除成功!");

    }

    //查看学生信息
    public void findAllStudent() {
        //调用StudentService的findAllStudent方法
        StudentService studentService=new StudentService();
        Student[] students=studentService.findAllStudent();
        //判断
        if(students==null){
            System.out.println("系统中没有数据,请输入后再查看!");
            return;
        }
        System.out.println("学号\t\t姓名\t年龄\t生日");
        //遍历数组
        for (int i = 0; i < students.length; i++) {
            Student stu=students[i];
            if(stu!=null){
                System.out.println(stu.getSid()+"\t"+stu.getName()+"\t"+stu.getAge()+"\t"+stu.getBirthday());
            }
        }
    }

    //添加学生
    public void addStudent() {
        //定义学号,为了{ }外应用
        String sid;
        //创建键盘录入对象
        Scanner sc=new Scanner(System.in);
        while(true){
            System.out.println("请输入学号");
            sid = sc.nextLine();
            //调用StudentService的isExist方法判断学号是否存在
            StudentService studentService=new StudentService();
            boolean flag=studentService.isExist(sid);
            //判断
            if(flag){
                System.out.println("您输入的学号已存在,请重新输入:");
            }else{
                break;
            }
        }
        /*System.out.println("请输入姓名");
        String name = sc.nextLine();
        System.out.println("请输入年龄");
        String age = sc.nextLine();
        System.out.println("请输入生日");
        String birthday = sc.nextLine();
        //创建对象录入
        Student stu=new Student();
        stu.setSid(sid);
        stu.setName(name);
        stu.setAge(age);
        stu.setBirthday(birthday);*/

        //调用方法键盘录入学生信息
        Student stu=inputStudentinfo(sid);

        //调用StudentService的addStudent方法
        StudentService studentService=new StudentService();
        boolean flag=studentService.addStudent(stu);
        //判断是否添加成功
        if(flag){
            System.out.println("添加成功!");
        }else{
            System.out.println("添加失败!");
        }
    }

    //键盘录入学生学号
    public String inputStudentSid(){
        //创建键盘录入对象
        //定义学号,为了在{ }外进行操作
        String sid;
        //不明所以,还有几回可以输对学号
        while(true){
            System.out.println("请输入学号");
            sid=sc.nextLine();
            //调用StudentService的isExist方法判断学号是否存在
            StudentService studentService=new StudentService();
            boolean flag=studentService.isExist(sid);
            //判断
            if(!flag){
                System.out.println("您输入的学号不存在,请重新输入");
            }else{
                break;
            }
        }return sid;
    }

    //键盘录入学生对象信息
    public Student inputStudentinfo(String sid){
        System.out.println("请输入姓名");
        String name = sc.nextLine();
        System.out.println("请输入年龄");
        String age = sc.nextLine();
        System.out.println("请输入生日");
        String birthday = sc.nextLine();
        //创建对象录入
        Student stu=new Student();
        stu.setSid(sid);
        stu.setName(name);
        stu.setAge(age);
        stu.setBirthday(birthday);
        return stu;
    }
}
